"""
十大歌神
NZD正在进行“十大歌神”评选，全校学生可以投票选出他们最喜欢的歌神。
编写一个程序来模拟这个投票和统计过程。
首先，使用random的方式生成100个人名（可以是中英文），然后用random的方法随机抽取这些人名填充到长度为1000的列表中，模拟1000次投票。最后，程序应统计出十大歌神，并特别打印出冠军的名字和所得票数。
"""

import random


def generate_names(num):

    surnames = ['W,' 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'L']

    given_names = ['F', 'G', 'H', 'J', 'K', 'L', 'B', 'V', 'C', 'X']

    return [random.choice(surnames) + random.choice(given_names) for _ in range(num)]

def nzd_top_singers():
    names = generate_names(100)

    votes = [random.choice(names) for _ in range(1000)]

    vote_counts = [[name, votes.count(name)] for name in set(names)]

    top_ten = sorted(vote_counts, key=lambda x: x[1], reverse=True)[:10]

    print("十大歌神:")

    for i, (name, count) in enumerate(top_ten, 1):

        print(f"{i}. {name}: {count}票")

    champion, champion_votes = top_ten[0]

    print(f"\n冠军是: {champion}，他/她获得了{champion_votes}票")


if __name__ == '__main__':
    nzd_top_singers()
